package modelo.escenario;

import compartido.IEntidad;

public class Arteria implements IEntidad {
	
	final static double VELOCIDAD_MINIMA_CALLE 			= 20;
	final static double VELOCIDAD_MAXIMA_CALLE 			= 40;
	final static double VELOCIDAD_MINIMA_AVENIDA 		= 30;
	final static double VELOCIDAD_MAXIMA_AVENIDA 		= 60;
	final static double VELOCIDAD_MINIMA_SEMIAUTOPISTA 	= 40;
	final static double VELOCIDAD_MAXIMA_SEMIAUTOPISTA 	= 120;
	final static double VELOCIDAD_MINIMA_AUTOPISTA 		= 65;
	final static double VELOCIDAD_MAXIMA_AUTOPISTA 		= 130;
	
	private double limiteVelocidadMaxima;
	private double limiteVelocidadMinima;
	private long id;
	private String nombre;
	
	private Arteria(double limiteVelocidadMinima, double limiteVelocidadMaxima, String nombre){
		this.limiteVelocidadMinima = limiteVelocidadMinima;
		this.limiteVelocidadMaxima = limiteVelocidadMaxima;
		this.nombre = nombre;
	}
	
	public double getLimiteVelocidadMaxima() {
		return limiteVelocidadMaxima;
	}

	public double getLimiteVelocidadMinima() {
		return limiteVelocidadMinima;
	}
	
	public static Arteria crearAutopista(String nombre){
		return new Arteria(VELOCIDAD_MINIMA_AUTOPISTA,VELOCIDAD_MAXIMA_AUTOPISTA, nombre);
	}

	public static Arteria crearSemiAutopista(String nombre){
		return new Arteria(VELOCIDAD_MINIMA_SEMIAUTOPISTA,VELOCIDAD_MAXIMA_SEMIAUTOPISTA, nombre);
	}	
	
	public static Arteria crearCalle(String nombre){
		return new Arteria(VELOCIDAD_MINIMA_CALLE,VELOCIDAD_MAXIMA_CALLE, nombre);
	}

	public static Arteria crearAvenida(String nombre){
		return new Arteria(VELOCIDAD_MINIMA_AVENIDA,VELOCIDAD_MAXIMA_AVENIDA, nombre);
	}

	@Override
	public String getIdentificador() {
		return  String.valueOf(id);
	}
	
	public String getNombre() {
		return nombre;
	}
	
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
}
